package cn.sdormitory.service;

import cn.sdormitory.basedata.entity.BClass;
import cn.sdormitory.basedata.vo.BStudentListVo;
import cn.sdormitory.smartdor.entity.DeptDataBoardSummary;
import cn.sdormitory.smartdor.entity.DeptDormitorySummary;
import cn.sdormitory.smartdor.entity.SdAttence;
import cn.sdormitory.smartdor.vo.DormitoryAttenceVo;
import cn.sdormitory.smartdor.vo.SdAttenceVo;
import cn.sdormitory.sys.entity.SysDictDetail;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @创建人：zhouyang
 * @创建时间：2020/12/30 11:48
 * @version：V1.0
 */
public interface AppAttenceService {
    List<DormitoryAttenceVo> getAppDorAttence();

    List<SdAttenceVo> getAppAbsenceStudent(Date checkDate);

    SdAttence getAttenceById(Long id);

    BClass getClassById(Long id);

    List<BClass> getClassListAll();

    List<SysDictDetail> selectDictDataByType(String dictType);

    int insert(SdAttence sdAttence);

    /**
     * 根据当前班主任id获取其所有管理班级的考勤数据
     * @param params
     */
    List<Map<String, Object>> getAllClassAttendanceByClsTeachId(Map<String, String> params);
    
    /**
     * 获取未考勤数据
     * @author alex
     * @param: checkDate
     * @date 2024/10/8 14:51
     * @return
     */
    List<BStudentListVo> getDormitoryUnClockStu(String userId, String checkDate, String classId);
    
    /**
     * 获取周末未考勤数据
     * @author alex
     * @param: userId
     * @param: checkDate
     * @date 2024/10/10 14:50
     * @return
     */
    List<BStudentListVo> getWeekendUnClockStu(String userId, String checkDate, String classId);
	
    /**
     * 获取部门考勤汇总情况
     * @author alex
     * @date 2024/10/16 11:03
     * @return
     */
    List<DeptDormitorySummary> getDeptDormitorySummary(String userId, String accessTime, String operateType);
    
    /**
     * 根据类型去获取学生数据
     * @author alex
     * @param: classId
     * @param: accessDate
     * @param: type
     * @date 2024/10/16 16:11
     * @return
     */
    List<BStudentListVo> getStuListByType(String classId, String accessDate, String type);
    
    /**
     * 周末考勤根据类型获取学生列表
     * @author alex
     * @param: classId
     * @param: accessDate
     * @param: type
     * @date 2024/10/17 14:08
     * @return
     */
    List<BStudentListVo> getWeekendStuListByType(String classId, String accessDate, String type);
	
    /**
     * 获取部门经理数据面板数据
     * @author alex
     * @param: userId
     * @param: accessDate
     * @date 2024/11/2 11:47
     * @return
     */
    DeptDataBoardSummary getAttenceBoardData(String userId, String type);
    
    // 每日考勤数据看板数据获取
    DeptDormitorySummary getAttenceStatisticalData(String userId, String accessDate, String type);
	
    // 月度统计看板数据获取
    List<DeptDataBoardSummary> getMonthlyStatisticsData(String userId, String type);
 
}
